Real-time computer operating systems can be configured to supervise and execute multiple application threads concurrently. These operating systems permit the programming code to be organized such that, conceptually, these multiple application threads are being executed simultaneously. In reality, however, the operating system is switching between each of the threads, in accordance with a programmed schedule.
In addition, some real-time computer systems may be configured to provide both space partitioning and time partitioning. Partitioning refers generally to separation of resources used by various application threads in a system, such that the resources utilized by a one thread are protected from corruption or usurping by another thread. Space partitioning refers to the protection of resources such as, for example, memory and I/O devices. Time partitioning refers to assurance that a given thread will have access to a predetermined amount of CPU time, regardless of the attempted behavior of any other thread.
One example of a real-time system that may be both space and time-partitioned, is an aircraft avionics system. An avionics system may include application threads that are used to monitor and control functions of varying criticality, and that may execute using the same processing assets, such as a single central processing unit (CPU) or the same memory (or portions of memory). Thus, the application schedule allocates CPU time to each of the various application threads, and ensures that the application threads used to monitor and/or control less critical functions do not prevent application threads used to monitor and/or control higher criticality functions from executing in a timely manner.
The application schedule allocates CPU time based on a budgeted time and a rate for each application thread. More particularly, each application thread has a particular activation time budget and activation period. An application thread may be repeatedly activated at its particular activation period, and for its particular amount of budgeted activation time during each activation period. For example, a first application thread may have a budgeted activation time of 3 units of time and an activation period of 5 units of time, and a second application thread may have a budgeted activation time of 4 units of time and an activation period of 10 units of time (e.g., the first application thread has an activation frequency that is twice that of the second application thread). Thus, when each application thread is operating within its assigned budget, the first application thread may be activated for up to 3 units of time every 5 units of time, and the second application may be activated for up to 4 units of time every 10 units of time.
The activation time budget of each application thread typically includes at least an execution time and a pad time. The execution time is the amount of time needed for the application thread to perform its intended function. The pad time is included as part of the activation time budget to allow for instances in which an application thread may attempt to overrun its execution time budget. The magnitude of this pad time is determined based on postulated or measured worst-case response conditions, and is included in the activation budget of each application thread. Thus, the overall activation time budget for an application is the sum of the worst-case activation time budgets for each of the individual threads of the application.
Although the above-described method of handling application thread activation time budget overruns provides for some design conservatism, it may also result in overall system underutilization. This is because the magnitude of the pad time is fairly pessimistic compared to execution time overrun values actually experienced, and the overall activation time budget for each application is subtracted from the overall system utilization time pool.
Accordingly, there is a need for a system and method for handling application thread activation time budget overruns that increases system utilization capabilities as compared to present systems and methods. Furthermore, other desirable features and characteristics will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and this background section.